package jwt

// import (
// 	"context"
// 	"time"

// 	"github.com/cloudwego/hertz/pkg/app"
// 	"github.com/hertz-contrib/jwt"
// )

// func InitJWT() {
// 	var err error
// 	jwtMiddleware, err := jwt.New(&jwt.HertzJWTMiddleware{
// 		Realm:       "test zone",
// 		Key:         []byte("your_secret_key"),
// 		Timeout:     time.Hour * 1,  // 短 Token 过期时间
// 		MaxRefresh:  time.Hour * 24, // 长 Token 过期时间
// 		IdentityKey: "user_id",
// 		PayloadFunc: func(data interface{}) jwt.MapClaims {
// 			if v, ok := data.(*User); ok {
// 				return jwt.MapClaims{
// 					"user_id": v.ID,
// 				}
// 			}
// 			return jwt.MapClaims{}
// 		},
// 		IdentityHandler: func(ctx context.Context, c *app.RequestContext) interface{} {
// 			claims := jwt.ExtractClaims(ctx, c)
// 			return &User{
// 				ID: claims["user_id"].(string),
// 			}
// 		},
// 		Authenticator: func(ctx context.Context, c *app.RequestContext) (interface{}, error) {
// 			var user User
// 			if err := c.BindAndValidate(&user); err != nil {
// 				return nil, jwt.ErrMissingLoginValues
// 			}
// 			// 验证用户登录信息
// 			if user.ID == "admin" && user.Password == "admin" {
// 				return &User{
// 					ID: user.ID,
// 				}, nil
// 			}
// 			return nil, jwt.ErrFailedAuthentication
// 		},
// 		Unauthorized: func(ctx context.Context, c *app.RequestContext, code int, message string) {
// 			c.JSON(code, map[string]interface{}{
// 				"code":    code,
// 				"message": message,
// 			})
// 		},
// 	})
// 	if err != nil {
// 		panic(err)
// 	}

// 	// 注册 JWT 中间件
// 	h.POST("/login", jwtMiddleware.LoginHandler)
// 	auth := h.Group("/auth")
// 	auth.Use(jwtMiddleware.MiddlewareFunc())
// 	auth.GET("/protected", func(c *app.RequestContext) {
// 		c.JSON(200, map[string]interface{}{
// 			"message": "Welcome to the protected endpoint!",
// 		})
// 	})
// }

// func LoginHandler(c *app.RequestContext) {
// 	var user User
// 	if err := c.BindAndValidate(&user); err != nil {
// 		c.JSON(400, map[string]interface{}{
// 			"error": "Invalid request",
// 		})
// 		return
// 	}

// 	// 验证用户登录信息
// 	if user.ID == "admin" && user.Password == "admin" {
// 		// 生成短 Token (Access Token)
// 		accessToken, err := jwtMiddleware.GenerateToken(&user)
// 		if err != nil {
// 			c.JSON(500, map[string]interface{}{
// 				"error": "Failed to generate access token",
// 			})
// 			return
// 		}

// 		// 生成长 Token (Refresh Token)
// 		refreshToken, err := jwtMiddleware.GenerateRefreshToken(&user)
// 		if err != nil {
// 			c.JSON(500, map[string]interface{}{
// 				"error": "Failed to generate refresh token",
// 			})
// 			return
// 		}

// 		c.JSON(200, map[string]interface{}{
// 			"access_token":  accessToken,
// 			"refresh_token": refreshToken,
// 		})
// 	} else {
// 		c.JSON(401, map[string]interface{}{
// 			"error": "Unauthorized",
// 		})
// 	}
// }

// func RefreshTokenHandler(c *app.RequestContext) {
// 	// 从请求中提取长 Token
// 	refreshToken := c.Query("refresh_token")
// 	if refreshToken == "" {
// 		c.JSON(400, map[string]interface{}{
// 			"error": "Missing refresh token",
// 		})
// 		return
// 	}

// 	// 验证长 Token
// 	claims, err := jwtMiddleware.ParseToken(refreshToken)
// 	if err != nil {
// 		c.JSON(401, map[string]interface{}{
// 			"error": "Invalid refresh token",
// 		})
// 		return
// 	}

// 	// 生成新的短 Token
// 	accessToken, err := jwtMiddleware.GenerateToken(claims)
// 	if err != nil {
// 		c.JSON(500, map[string]interface{}{
// 			"error": "Failed to generate access token",
// 		})
// 		return
// 	}

// 	c.JSON(200, map[string]interface{}{
// 		"access_token": accessToken,
// 	})
// }
